package com.sangeng.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sangeng.domain.ResponseResult;
import com.sangeng.domain.dto.UserAddDto;
import com.sangeng.domain.dto.UserUpdateDto;
import com.sangeng.domain.entity.User;
import com.sangeng.domain.vo.PageVo;
import com.sangeng.domain.vo.UserUpdateVo;


/**
 * 用户表(User)表服务接口
 *
 * @author makejava
 * @since 2023-10-03 15:34:53
 */
public interface UserService extends IService<User> {
    /**
     * 获取个人信息
     * @return
     */

    ResponseResult userInfo();
    /**
     * 修改个人信息并保存
     * @param user
     * @return
     */

    ResponseResult updateUserInfo(User user);
    /**
     * 用户注册
     * @param user
     * @return
     */
    ResponseResult register(User user);
    /**
     * 分页查询所有的用户
     * 需要用户分页列表接口。可以根据用户名模糊搜索。
     可以进行手机号的搜索。可以进行状态的查询。
     * @param pageNum
     * @param pageSize
     * @param userName
     * @param phonenumber
     * @param status
     * @return
     */

    ResponseResult<PageVo> getAllUser(Integer pageNum,Integer pageSize,String userName , String phonenumber, String status);
    /**
     * 添加用户
     * @param userAddDto
     * @return
     */
    ResponseResult saveData(UserAddDto userAddDto);
    /**
     * 根据用户id删除用户，但是不能删除此时正在操作界面的用户
     * @param id
     * @return
     */
    ResponseResult deleteUserById(Long id);
    /**
     * 根据用户id查询用户信息，所有角色列表以及用户所选的角色id列表
     * @param id
     * @return
     */
    ResponseResult<UserUpdateVo> getUserById(Long id);
    /**
     * 更新用户信息，用户角色表也要更新
     * @param userUpdateDto
     * @return
     */
    ResponseResult updateUser(UserUpdateDto userUpdateDto);
}
